## generic imports
import altair as alt
import pandas as pd
from vega_datasets import data
import glob
from os import listdir,path
from pathlib import Path

counties = alt.topo_feature(data.us_10m.url, 'counties')
# used for world visualization later
#countries = alt.topo_feature(data.world_110m.url, 'countries')
source = data.unemployment.url

#https://altair-viz.github.io/user_guide/faq.html
alt.data_transformers.disable_max_rows()

# https://altair-viz.github.io/user_guide/transform/lookup.html
#### month selection
month_select = alt.selection_single(
    name='select', fields=['date'], init={'monthdate(date)':1},
    bind=alt.binding_range(min=1, max=12, step =1)
)

### to add animation to chloropleth map, start the data with your data frame and then use lookup on the url, as altair can't
### dynamically resolve which data to animate and it can only do it with pd dataframes

directory_in_str = './COVID-19-master/csse_covid_19_data/csse_covid_19_daily_reports_us/'
def find_csv_filenames( path_to_dir, suffix):
    filenames = listdir(path_to_dir)
    return [ filename for filename in filenames if filename.endswith( suffix ) ]

# create clustering algorithm to cluster states into the 5 regions
def fiveRegion(statename):

#     West]Colorado, Wyoming, Montana, Idaho, Washington, Oregon, Utah, Nevada, California, Alaska, Hawaii


    regionName = ""
    if statename == 'Alabama':
        regionName = 'Southeast'
        
    elif statename == 'Alaska':
        regionName = 'West'
        
    elif statename == 'Arizona':
        regionName = 'Southwest'
        
    elif statename == 'Arkansas':
        regionName = 'Southeast'
        
    elif statename == 'California':
        regionName = 'West'
        
    elif statename == 'Colorado':
        regionName = 'West'
        
    elif statename == 'Connecticut':
        regionName = 'Northeast'
        
    elif statename == 'Delaware':
        regionName = 'Northeast'
        
#     elif statename == 'District of Columbia':
#         regionName = 'West'
    
    elif statename == 'Florida':
        regionName = 'Southeast'
    
    elif statename == 'Georgia':
        regionName = 'Southeast'
    
    elif statename == 'Hawaii':
        regionName = 'West'
    
    elif statename == 'Idaho':
        regionName = 'West'
    
    elif statename == 'Illinois':
        regionName = 'Midwest'
    
    elif statename == 'Indiana':
        regionName = 'Midwest'
    
    elif statename == 'Iowa':
        regionName = 'Midwest'
    
    elif statename == 'Kansas':
        regionName = 'Midwest'
    
    elif statename == 'Kentucky':
        regionName = 'Southeast'
    
    elif statename == 'Louisiana':
        regionName = 'Southeast'
    
    elif statename == 'Maine':
        regionName = 'Northeast'
    
    elif statename == 'Maryland':
        regionName = 'Northeast'
    
    elif statename == 'Massachusetts':
        regionName = 'Northeast'
    
    elif statename == 'Michigan':
        regionName = 'Midwest'
    
    elif statename == 'Minnesota':
        regionName = 'Midwest'
    
    elif statename == 'Mississippi':
        regionName = 'Southeast'
    
    elif statename == 'Missouri':
        regionName = 'Midwest'
    
    elif statename == 'Montana':
        regionName = 'West'
    
    elif statename == 'Nebraska':
        regionName = 'Midwest'
    
    elif statename == 'Nevada':
        regionName = 'West'
    
    elif statename == 'New Hampshire':
        regionName = 'Northeast'
    
    elif statename == 'New Jersey':
        regionName = 'Northeast'
    
    elif statename == 'New Mexico':
        regionName = 'Southwest'
    
    elif statename == 'New York':
        regionName = 'Northeast'
    
    elif statename == 'North Carolina':
        regionName = 'Southeast'
    
    elif statename == 'North Dakota':
        regionName = 'Midwest'
    
#     elif statename == 'Northern Mariana Islands':
    
    elif statename == 'Ohio':
        regionName = 'Midwest'
    
    elif statename == 'Oklahoma':
        regionName = 'Southwest'
    
    elif statename == 'Oregon':
        regionName = 'West'
    
    elif statename == 'Pennsylvania':
        regionName = 'Northeast'
    
    elif statename == 'Rhode Island':
        regionName = 'Northeast'
    
    elif statename == 'South Carolina':
        regionName = 'Southeast'
    
    elif statename == 'South Dakota':
        regionName = 'Midwest'
    
    elif statename == 'Tennessee':
        regionName = 'Southeast'
    
    elif statename == 'Texas':
        regionName = 'Southwest'
    
    elif statename == 'Utah':
        regionName = 'West'
    
    elif statename == 'Vermont':
        regionName = 'Northeast'
    
#     elif statename == 'Virgin Islands':
    
    elif statename == 'Virginia':
        regionName = 'Southeast'
    
    elif statename == 'Washington':
        regionName = 'West'
    
    elif statename == 'West Virginia':
        regionName = 'Southeast'
    
    elif statename == 'Wisconsin':
        regionName = 'Midwest'
    
    elif statename == 'Wyoming':
        regionName = 'West'
    
    else:
        regionName = 'Not a region'
        
    
    return regionName

# open covid 'csse_covid_19_daily_reports_us'
filePath = './COVID-19-master/csse_covid_19_data/csse_covid_19_daily_reports_us/01-01-2021.csv'
filename = path.basename('/csse_covid_19_daily_reports_us/01-01-2021.csv')
# filePath = str(filePath)
print(filename)
df = pd.read_csv('%s' % filePath)
df["date"] = filename.replace('.csv','')
# df.to_csv("{filename}.csv", index=False)

# list comprehensions
df['region'] = [fiveRegion(x) for x in df['Province_State']]
df['FIPS'] = [int(x) for x in df['FIPS']]

# cleanup
df = df.rename({"Province_State": "State", "Country_Region":"Country"}, axis='columns')
df.shape
01-01-2021.csv
(58, 20)
(50, 20)

Maps of the states showing case number

(map1 + covid21) | (map1 + covid20)